Apache默认虚拟主机

        为了防止其他不是自己的域名解析到自己的IP,我们可以通过更改虚拟主机文件限制其他域名。我们创建的新的虚拟主机,创建一个新的空目录将其权限设置为600。这样只有我们在配置文件中定义的域名在能访问。
命令如下:

1
[root@lamp ~]# vim /usr/local/apache2/conf/extra/httpd-vhosts.conf

        把下面的配置:

1
2
3
4
5
6
7
8
<VirtualHost *:80>
ServerAdmin webmaster@dummy-host.example.com
DocumentRoot "/usr/local/apache2/docs/dummy-host.example.com"
ServerName dummy-host.example.com
ServerAlias www.dummy-host.example.com
ErrorLog "logs/dummy-host.example.com-error_log"
CustomLog "logs/dummy-host.example.com-access_log" common
</VirtualHost>

        修改为:

1
2
3
4
5
6
7
8
<VirtualHost *:80>
DocumentRoot "/tmp/tmp"
ServerName tmp.com
<Directory /tmp/tmp/>
Order allow,deny
Deny from all
</Directory>
</VirtualHost>

        也可以直接设置成第一个虚拟主机配置文件。

        创建配置中提到的目录,并设置权限 600

1
2
[root@lamp ~]# mkdir /tmp/tmp
[root@lamp ~]# chmod 600 /tmp/tmp

        检测配置文件,重启 apache 服务

1
2
3
[root@lamp ~]# apachectl -t
Syntax OK
[root@lamp ~]# apachectl restart

        其实这个默认虚拟主机就是配置文件里的第一个虚拟主机。关于默认虚拟主机有个特点,凡是解析到这台机器的域名,不管是什么域名,只要在配置文件中没有配置,那么都会访问到这个主机上来。为了避免别人乱解析,应该把默认也就是第一个虚拟主机给禁止掉。这里使用了 allow,deny 语句,已经禁止掉了。现在用 ip 或其他域名去访问,已经提示:

apache nameserver 两个如何设置

1
2
3
4
ServerName sub1.domain.com
ServerAlias sub2.domain.com
DocumentRoot /var/www/sub/
# other settings

apache 代理模块 proxy应用

        要使用proxy功能,首先编译apache的时候,需要加上参数 ·–enable-proxy –enable-proxy-http·

        如果,不想重新编译,也可以以扩展的形式安装proxy模块,具体请参考 apache mod_proxy 扩展模块安装

        具体配置为:

1
2
3
4
5
6
7
8
9
ServerName www.test.com
CustomLog "/dev/null" combined
ProxyRequests Off
Order deny,allow
Allow from all
ProxyPass / http://www.test.com/
ProxyPassReverse / 192.168.13.111/

        另外需要注意的是,需要在/etc/hosts 中加一条记录

1
192.168.13.111 www.test.com

apache某个虚拟主机不启用gzip

        默认情况下,如果apache中调用了mod_deflate ,那么所有虚拟主机都会启用gzip压缩功能。但有时候会遇到某个虚拟主机不想启用gzip的应用,这如何设置呢?
只要在该虚拟主机中加入一下代码即可。

1
SetOutputFilter DEFLATE

        这里的 /data/web/example 为该虚拟主机的主目录。

apache配置多个域名指向的虚拟主机访问总是指向第一个虚拟主机

        在配置apache多个虚拟主机的时候,访问总是指向第一个虚拟主机,加上 NameVirtualHost * :80后解决问题.

1
2
3
4
5
6
7
8
<VirtualHost *:80>
DocumentRoot "F:/web"
ServerName localhost
</VirtualHost>
<VirtualHost *:80>
DocumentRoot "F:/web/aa/"
ServerName *.test.com
</VirtualHost>

针对apache的虚拟主机开启php短标签

        php.ini中

1
short_open_tag = On

        除<?php ?>,可使用更灵活的调用方法

        <? /程序操作/ ?>

        <?=/函数/?>